SlideShare a Scribd company logo
Socket Programming Jignesh Patel Palanivel Rathinam connecting processes
Overview ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
Introduction to Sockets ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Socket
Introduction to Sockets ,[object Object],[object Object],[object Object],[object Object],[object Object],Server Client Client 192.168.0.1 192.168.0.2 192.168.0.2 80 1343 5488 Client 192.168.0.3 1343
Introduction to Sockets ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
A generic TCP application ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
A generic UDP application ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
Programming Client-Server in C ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programming TCP Client in C #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h>  void error(char *msg){  perror(msg);  exit(0);} int main(int argc, char *argv[]){  int sockfd, portno, n;  struct sockaddr_in serv_addr;  struct hostent *server;  char buffer[256];  if (argc < 3) {   fprintf(stderr,&quot;usage %s hostname port&quot;, argv[0]);  exit(0);  }  portno = atoi(argv[2]);  sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  if (sockfd < 0)  error(&quot;ERROR opening socket&quot;);  /* a structure to contain an internet address  defined in the include file <netinet/in.h> */ struct sockaddr_in { short  sin_family; /* should be AF_INET */ u_short sin_port; struct  in_addr sin_addr; char  sin_zero[8]; /* not used, must be zero */ }; struct in_addr { unsigned long s_addr; };  Client.c
Programming TCP Client in C #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h>  void error(char *msg){  perror(msg);  exit(0);} int main(int argc, char *argv[]){  int sockfd, portno, n;  struct sockaddr_in serv_addr;  struct hostent *server;  char buffer[256];  if (argc < 3) {   fprintf(stderr,&quot;usage %s hostname port&quot;, argv[0]);  exit(0);  }  portno = atoi(argv[2]);  sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  if (sockfd < 0)  error(&quot;ERROR opening socket&quot;);  Client.c Socket System Call  – create an end point for communication #include <sys/types.h> #include <sys/socket.h> int socket(int  domain , int  type , int  protocol ); Returns a descriptor domain : selects protocol family  e.g. PF_IPX, PF_X25, PF_APPLETALK type : specifies communication semantics e.g. SOCK_DGRAM, SOCK_RAW protocol : specifies a particular protocol to be used e.g. IPPROTO_UDP, IPPROTO_ICMP
Programming TCP Client in C server = gethostbyname(argv[1]);  if (server == NULL) {  fprintf(stderr,&quot;ERROR, no such host&quot;); exit(0);  }  bzero((char *) &serv_addr, sizeof(serv_addr));  serv_addr.sin_family = AF_INET;  bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr , server->h_length);  serv_addr.sin_port = htons(portno);  if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)  error(&quot;ERROR connecting&quot;);  printf(&quot;Please enter the message: &quot;);  bzero(buffer,256);  fgets(buffer,255,stdin);  n = send(sockfd,buffer,strlen(buffer),0);  if (n < 0)  error(&quot;ERROR writing to socket&quot;);  bzero(buffer,256);  n = recv(sockfd,buffer,255,0);  if (n < 0)   error(&quot;ERROR reading from socket&quot;);  printf(&quot;%s&quot;,buffer);  close(sockfd);  return 0; }  Client.c Connect System Call  – initiates a connection on a socket #include <sys/types.h> #include <sys/socket.h> int connect( int  sockfd ,  const struct sockaddr * serv_addr , socklen_t  addrlen ); Returns 0 on success sockfd : descriptor that must refer to a socket serv_addr : address to which we want to connect addrlen : length of  serv_addr
Programming TCP Client in C server = gethostbyname(argv[1]);  if (server == NULL) {  fprintf(stderr,&quot;ERROR, no such host&quot;); exit(0);  }  bzero((char *) &serv_addr, sizeof(serv_addr));  serv_addr.sin_family = AF_INET;  bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr , server->h_length);  serv_addr.sin_port = htons(portno);  if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)  error(&quot;ERROR connecting&quot;);  printf(&quot;Please enter the message: &quot;);  bzero(buffer,256);  fgets(buffer,255,stdin);  n = send(sockfd,buffer,strlen(buffer),0);  if (n < 0)  error(&quot;ERROR writing to socket&quot;);  bzero(buffer,256);  n = recv(sockfd,buffer,255,0);  if (n < 0)   error(&quot;ERROR reading from socket&quot;);  printf(&quot;%s&quot;,buffer);  close(sockfd);  return 0; }  Client.c Send System Call  – send a message to a socket #include <sys/types.h> #include <sys/socket.h> int send( int  s , const void * msg , size_t  len ,  int  flags ); Returns number of characters sent on success s : descriptor that must refer to a socket in connected state msg : data that we want to send len : length of data flags : use default 0. MSG_OOB, MSG_DONTWAIT
Programming TCP Client in C server = gethostbyname(argv[1]);  if (server == NULL) {  fprintf(stderr,&quot;ERROR, no such host&quot;); exit(0);  }  bzero((char *) &serv_addr, sizeof(serv_addr));  serv_addr.sin_family = AF_INET;  bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr , server->h_length);  serv_addr.sin_port = htons(portno);  if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)  error(&quot;ERROR connecting&quot;);  printf(&quot;Please enter the message: &quot;);  bzero(buffer,256);  fgets(buffer,255,stdin);  n = send(sockfd,buffer,strlen(buffer),0);  if (n < 0)  error(&quot;ERROR writing to socket&quot;);  bzero(buffer,256);  n = recv(sockfd,buffer,255,0);  if (n < 0)   error(&quot;ERROR reading from socket&quot;);  printf(&quot;%s&quot;,buffer);  close(sockfd);  return 0; }  Client.c Recv System Call  – receive a message from a socket #include <sys/types.h> #include <sys/socket.h> int recv( int  s , const void * buff , size_t  len ,  int  flags ); Returns number of bytes received on success s : descriptor that must refer to a socket in connected state buff : data that we want to receive  len : length of data flags : use default 0. MSG_OOB, MSG_DONTWAIT
Programming TCP Client in C server = gethostbyname(argv[1]);  if (server == NULL) {  fprintf(stderr,&quot;ERROR, no such host&quot;); exit(0);  }  bzero((char *) &serv_addr, sizeof(serv_addr));  serv_addr.sin_family = AF_INET;  bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr , server->h_length);  serv_addr.sin_port = htons(portno);  if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)  error(&quot;ERROR connecting&quot;);  printf(&quot;Please enter the message: &quot;);  bzero(buffer,256);  fgets(buffer,255,stdin);  n = send(sockfd,buffer,strlen(buffer),0);  if (n < 0)  error(&quot;ERROR writing to socket&quot;);  bzero(buffer,256);  n = recv(sockfd,buffer,255,0);  if (n < 0)   error(&quot;ERROR reading from socket&quot;);  printf(&quot;%s&quot;,buffer);  close(sockfd);  return 0; }  Client.c Close System Call  – close a socket descriptor #include <unistd.h> int close( int  s ); Returns 0 on success s : descriptor to be closed
Programming TCP Server in C #include <stdio.h>  #include <sys/types.h>  #include <sys/socket.h>  #include <netinet/in.h>  void error(char *msg){  perror(msg);  exit(0);} int main(int argc, char *argv[]){  int sockfd, newsockfd, portno, clilen;  char buffer[256];  struct sockaddr_in serv_addr, cli_addr;  int n;  if (argc < 2) { fprintf(stderr,&quot;ERROR, no port provided&quot;); exit(1); }  sockfd = socket(AF_INET, SOCK_STREAM, 0);  if (sockfd < 0) error(&quot;ERROR opening socket&quot;);  bzero((char *) &serv_addr, sizeof(serv_addr));  portno = atoi(argv[1]);  serv_addr.sin_family = AF_INET;  serv_addr.sin_addr.s_addr = INADDR_ANY;  serv_addr.sin_port = htons(portno);  Server.c
Programming TCP Server in C if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)  error(&quot;ERROR on binding&quot;);  listen(sockfd,5);  clilen = sizeof(cli_addr);  newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);  if (newsockfd < 0) error(&quot;ERROR on accept&quot;);  bzero(buffer,256);  n = recv(newsockfd,buffer,255,0);  if (n < 0) error(&quot;ERROR reading from socket&quot;);  printf(&quot;Here is the message: %s&quot;,buffer);  n = send(newsockfd,&quot;I got your message&quot;,18,0);  if (n < 0) error(&quot;ERROR writing to socket&quot;); close(newsockfd); close(sockfd);  return 0;  }  Server.c Bind System Call  – bind a name to a socket #include <sys/types.h> #include <sys/socket.h> int bind( int  sockfd ,  const struct sockaddr * serv_addr , socklen_t  addrlen ); Returns 0 on success sockfd : descriptor that must refer to a socket serv_addr : address to which we want to connect addrlen : length of  serv_addr
Programming TCP Server in C if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)  error(&quot;ERROR on binding&quot;);  listen(sockfd,5);  clilen = sizeof(cli_addr);  newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);  if (newsockfd < 0) error(&quot;ERROR on accept&quot;);  bzero(buffer,256);  n = recv(newsockfd,buffer,255,0);  if (n < 0) error(&quot;ERROR reading from socket&quot;);  printf(&quot;Here is the message: %s&quot;,buffer);  n = send(newsockfd,&quot;I got your message&quot;,18,0);  if (n < 0) error(&quot;ERROR writing to socket&quot;); close(newsockfd); close(sockfd);  return 0;  }  Server.c Listen System Call  – listen for connections on  a socket #include <sys/types.h> #include <sys/socket.h> int listen( int  s , int  backlog ); Returns 0 on success s : descriptor that must refer to a socket backlog : maximum length the queue for completely established sockets waiting to be accepted addrlen : length of  serv_addr
Programming TCP Server in C if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)  error(&quot;ERROR on binding&quot;);  listen(sockfd,5);  clilen = sizeof(cli_addr);  newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);  if (newsockfd < 0) error(&quot;ERROR on accept&quot;);  bzero(buffer,256);  n = recv(newsockfd,buffer,255,0);  if (n < 0) error(&quot;ERROR reading from socket&quot;);  printf(&quot;Here is the message: %s&quot;,buffer);  n = send(newsockfd,&quot;I got your message&quot;,18,0);  if (n < 0) error(&quot;ERROR writing to socket&quot;); close(newsockfd); close(sockfd);  return 0;  }  Server.c Accept System Call  – accepts a connection on a socket #include <sys/types.h> #include <sys/socket.h> int accept( int  sockfd ,  const struct sockaddr * addr , socklen_t  addrlen ); Returns a non-negative descriptor on success sockfd : descriptor that must refer to a socket addr : filled with address of connecting entity addrlen : length of  addr
Programming UDP Client in C ,[object Object],[object Object],[object Object],[object Object],[object Object],sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); len = sizeof(struct sockaddr_in); while (1) {  /* write */ n = sendto(sock,“Got your message&quot;,17, 0,(struct sockaddr *) &server, len);  f (n < 0) error(&quot;sendto&quot;);  /* read */ n = recvfrom(sock,buf,1024,0,(struct sockaddr *)&from, len);  if (n < 0) error(&quot;recvfrom&quot;); }
Programming UDP Server in C ,[object Object],[object Object],[object Object],[object Object],sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); len = sizeof(struct sockaddr_in); while (1) {  /* read */ n = recvfrom(sock,buf,1024,0,(struct sockaddr *)&from, len);  if (n < 0) error(&quot;recvfrom&quot;); /* write */ n = sendto(sock,&quot;Got your message&quot;,17, 0,(struct sockaddr *)&from, len);  f (n < 0) error(&quot;sendto&quot;);  }
Programming Client-Server in C ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],#include <winsock.h> … .. void main(int argc,char *argv[]){ WSADATA wsda; // if this doesn’t work // WSAData wsda; // then try this WSAStartup(0x0101,&wsda); … .. WSACleanup(); closesocket(sockfd); }
[object Object]
Programming TCP Client-Server in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programming TCP Client-Server in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programming TCP Client-Server in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programming TCP Client-Server in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programming TCP Client-Server in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programming TCP Client-Server in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programming UDP Client-Server in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programming UDP Client-Server in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programming UDP Client-Server in Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
References ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

Socket programming
Socket programmingSocket programming
Socket programming
Muhammad Fouad Ilyas Siddiqui
 
Socket Programming with Python
Socket Programming with PythonSocket Programming with Python
Socket Programming with Python
GLC Networks
 
Socket programming using C
Socket programming using CSocket programming using C
Socket programming using C
Ajit Nayak
 
Socket Programming In Python
Socket Programming In PythonSocket Programming In Python
Socket Programming In Python
didip
 
Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP)Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP)
k33a
 
Interprocess Communication
Interprocess CommunicationInterprocess Communication
Interprocess Communication
Deepak H L
 
Socket programming
Socket programmingSocket programming
Socket programming
NemiRathore
 
Easy Steps to implement UDP Server and Client Sockets
Easy Steps to implement UDP Server and Client SocketsEasy Steps to implement UDP Server and Client Sockets
Easy Steps to implement UDP Server and Client Sockets
babak danyal
 
Sockets
Sockets Sockets
Sockets
Gopaiah Sanaka
 
Address resolution protocol (ARP)
Address resolution protocol (ARP)Address resolution protocol (ARP)
Address resolution protocol (ARP)
NetProtocol Xpert
 
Python network programming
Python   network programmingPython   network programming
Python network programming
Learnbay Datascience
 
Simple Mail Transfer Protocol
Simple Mail Transfer ProtocolSimple Mail Transfer Protocol
Simple Mail Transfer Protocol
Ujjayanta Bhaumik
 
Network programming Using Python
Network programming Using PythonNetwork programming Using Python
Network programming Using Python
Karim Sonbol
 
TFTP - Trivial File Transfer Protocol
TFTP - Trivial File Transfer ProtocolTFTP - Trivial File Transfer Protocol
TFTP - Trivial File Transfer Protocol
Peter R. Egli
 
Socket programming or network programming
Socket programming or network programmingSocket programming or network programming
Socket programming or network programming
Mmanan91
 
Networking in python by Rj
Networking in python by RjNetworking in python by Rj
Socket programming
Socket programmingSocket programming
Socket programming
MdEmonRana
 

What's hot (20)

Socket programming
Socket programmingSocket programming
Socket programming
 
Socket Programming with Python
Socket Programming with PythonSocket Programming with Python
Socket Programming with Python
 
Socket programming using C
Socket programming using CSocket programming using C
Socket programming using C
 
Socket Programming In Python
Socket Programming In PythonSocket Programming In Python
Socket Programming In Python
 
Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP)Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP)
 
Interprocess Communication
Interprocess CommunicationInterprocess Communication
Interprocess Communication
 
Socket programming
Socket programmingSocket programming
Socket programming
 
Easy Steps to implement UDP Server and Client Sockets
Easy Steps to implement UDP Server and Client SocketsEasy Steps to implement UDP Server and Client Sockets
Easy Steps to implement UDP Server and Client Sockets
 
Ppt of socket
Ppt of socketPpt of socket
Ppt of socket
 
Basic socket programming
Basic socket programmingBasic socket programming
Basic socket programming
 
Sockets
Sockets Sockets
Sockets
 
TCP/IP
TCP/IPTCP/IP
TCP/IP
 
Address resolution protocol (ARP)
Address resolution protocol (ARP)Address resolution protocol (ARP)
Address resolution protocol (ARP)
 
Python network programming
Python   network programmingPython   network programming
Python network programming
 
Simple Mail Transfer Protocol
Simple Mail Transfer ProtocolSimple Mail Transfer Protocol
Simple Mail Transfer Protocol
 
Network programming Using Python
Network programming Using PythonNetwork programming Using Python
Network programming Using Python
 
TFTP - Trivial File Transfer Protocol
TFTP - Trivial File Transfer ProtocolTFTP - Trivial File Transfer Protocol
TFTP - Trivial File Transfer Protocol
 
Socket programming or network programming
Socket programming or network programmingSocket programming or network programming
Socket programming or network programming
 
Networking in python by Rj
Networking in python by RjNetworking in python by Rj
Networking in python by Rj
 
Socket programming
Socket programmingSocket programming
Socket programming
 

Viewers also liked

Select and poll functions
Select and poll functionsSelect and poll functions
Select and poll functions
Manju Srinivasan
 
Network Sockets
Network SocketsNetwork Sockets
Network Sockets
Peter R. Egli
 
Socket programming-tutorial-sk
Socket programming-tutorial-skSocket programming-tutorial-sk
Socket programming-tutorial-sk
sureshkarthick37
 
A Short Java Socket Tutorial
A Short Java Socket TutorialA Short Java Socket Tutorial
A Short Java Socket TutorialGuo Albert
 
Network programming in Java
Network programming in JavaNetwork programming in Java
Network programming in Java
Tushar B Kute
 
Networking Java Socket Programming
Networking Java Socket ProgrammingNetworking Java Socket Programming
Networking Java Socket ProgrammingMousmi Pawar
 
Network programming in java - PPT
Network programming in java - PPTNetwork programming in java - PPT
Network programming in java - PPT
kamal kotecha
 
Socket programming
Socket programmingSocket programming
Socket programming
chandramouligunnemeda
 

Viewers also liked (8)

Select and poll functions
Select and poll functionsSelect and poll functions
Select and poll functions
 
Network Sockets
Network SocketsNetwork Sockets
Network Sockets
 
Socket programming-tutorial-sk
Socket programming-tutorial-skSocket programming-tutorial-sk
Socket programming-tutorial-sk
 
A Short Java Socket Tutorial
A Short Java Socket TutorialA Short Java Socket Tutorial
A Short Java Socket Tutorial
 
Network programming in Java
Network programming in JavaNetwork programming in Java
Network programming in Java
 
Networking Java Socket Programming
Networking Java Socket ProgrammingNetworking Java Socket Programming
Networking Java Socket Programming
 
Network programming in java - PPT
Network programming in java - PPTNetwork programming in java - PPT
Network programming in java - PPT
 
Socket programming
Socket programmingSocket programming
Socket programming
 

Similar to Socket Programming Tutorial

Networking lab
Networking labNetworking lab
Networking lab
Ragu Ram
 
Network Programming in Java
Network Programming in JavaNetwork Programming in Java
Network Programming in Java
Tushar B Kute
 
03 sockets
03 sockets03 sockets
03 sockets
Pavan Illa
 
Socket programming in C
Socket programming in CSocket programming in C
Socket programming in CDeepak Swain
 
Networking & Socket Programming In Java
Networking & Socket Programming In JavaNetworking & Socket Programming In Java
Networking & Socket Programming In Java
Ankur Agrawal
 
CSc3320 Assignment 6 Due on 24th April, 2013 Socket programming .docx
CSc3320 Assignment 6 Due on 24th April, 2013 Socket programming .docxCSc3320 Assignment 6 Due on 24th April, 2013 Socket programming .docx
CSc3320 Assignment 6 Due on 24th April, 2013 Socket programming .docx
mydrynan
 
Socket System Calls
Socket System CallsSocket System Calls
Socket System Calls
Avinash Varma Kalidindi
 
Socket Programming
Socket ProgrammingSocket Programming
Socket Programming
Mostak Ahmed
 
python programming
python programmingpython programming
python programming
keerthikaA8
 
Socket programming
Socket programming Socket programming
Socket programming
Rajivarnan (Rajiv)
 
Remote Procedure Call
Remote Procedure CallRemote Procedure Call
Remote Procedure Call
Nadia Nahar
 
Pemrograman Jaringan
Pemrograman JaringanPemrograman Jaringan
Pemrograman Jaringan
belajarkomputer
 
Network Prog.ppt
Network Prog.pptNetwork Prog.ppt
Network Prog.ppt
EloOgardo
 
Net Programming.ppt
Net Programming.pptNet Programming.ppt
Net Programming.ppt
EloAcubaOgardo
 
A.java
A.javaA.java
Pycon - Python for ethical hackers
Pycon - Python for ethical hackers Pycon - Python for ethical hackers
Pycon - Python for ethical hackers
Mohammad Reza Kamalifard
 
Networks lab
Networks labNetworks lab
Networks lab
svijiiii
 
Networks lab
Networks labNetworks lab
Networks labsvijiiii
 

Similar to Socket Programming Tutorial (20)

Networking lab
Networking labNetworking lab
Networking lab
 
Network Programming in Java
Network Programming in JavaNetwork Programming in Java
Network Programming in Java
 
03 sockets
03 sockets03 sockets
03 sockets
 
Socket programming in C
Socket programming in CSocket programming in C
Socket programming in C
 
Networking & Socket Programming In Java
Networking & Socket Programming In JavaNetworking & Socket Programming In Java
Networking & Socket Programming In Java
 
CSc3320 Assignment 6 Due on 24th April, 2013 Socket programming .docx
CSc3320 Assignment 6 Due on 24th April, 2013 Socket programming .docxCSc3320 Assignment 6 Due on 24th April, 2013 Socket programming .docx
CSc3320 Assignment 6 Due on 24th April, 2013 Socket programming .docx
 
Socket System Calls
Socket System CallsSocket System Calls
Socket System Calls
 
Unit 8 Java
Unit 8 JavaUnit 8 Java
Unit 8 Java
 
Socket Programming
Socket ProgrammingSocket Programming
Socket Programming
 
python programming
python programmingpython programming
python programming
 
Socket programming
Socket programming Socket programming
Socket programming
 
Remote Procedure Call
Remote Procedure CallRemote Procedure Call
Remote Procedure Call
 
Npc08
Npc08Npc08
Npc08
 
Pemrograman Jaringan
Pemrograman JaringanPemrograman Jaringan
Pemrograman Jaringan
 
Network Prog.ppt
Network Prog.pptNetwork Prog.ppt
Network Prog.ppt
 
Net Programming.ppt
Net Programming.pptNet Programming.ppt
Net Programming.ppt
 
A.java
A.javaA.java
A.java
 
Pycon - Python for ethical hackers
Pycon - Python for ethical hackers Pycon - Python for ethical hackers
Pycon - Python for ethical hackers
 
Networks lab
Networks labNetworks lab
Networks lab
 
Networks lab
Networks labNetworks lab
Networks lab
 

More from Jignesh Patel

Aspect Oriented Software Development
Aspect Oriented Software DevelopmentAspect Oriented Software Development
Aspect Oriented Software DevelopmentJignesh Patel
 
CS554 � Introduction to Rational Rose
CS554 � Introduction to Rational RoseCS554 � Introduction to Rational Rose
CS554 � Introduction to Rational RoseJignesh Patel
 
CS521 Network Architecture II : Project Review
CS521 Network Architecture II : Project ReviewCS521 Network Architecture II : Project Review
CS521 Network Architecture II : Project ReviewJignesh Patel
 
DDoS Attacks
DDoS AttacksDDoS Attacks
DDoS Attacks
Jignesh Patel
 
Hardware Approaches for Fast Lookup & Classification
Hardware Approaches for Fast Lookup & ClassificationHardware Approaches for Fast Lookup & Classification
Hardware Approaches for Fast Lookup & Classification
Jignesh Patel
 
Link State Protocol
Link State ProtocolLink State Protocol
Link State Protocol
Jignesh Patel
 

More from Jignesh Patel (6)

Aspect Oriented Software Development
Aspect Oriented Software DevelopmentAspect Oriented Software Development
Aspect Oriented Software Development
 
CS554 � Introduction to Rational Rose
CS554 � Introduction to Rational RoseCS554 � Introduction to Rational Rose
CS554 � Introduction to Rational Rose
 
CS521 Network Architecture II : Project Review
CS521 Network Architecture II : Project ReviewCS521 Network Architecture II : Project Review
CS521 Network Architecture II : Project Review
 
DDoS Attacks
DDoS AttacksDDoS Attacks
DDoS Attacks
 
Hardware Approaches for Fast Lookup & Classification
Hardware Approaches for Fast Lookup & ClassificationHardware Approaches for Fast Lookup & Classification
Hardware Approaches for Fast Lookup & Classification
 
Link State Protocol
Link State ProtocolLink State Protocol
Link State Protocol
 

Recently uploaded

Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 

Recently uploaded (20)

Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 

Socket Programming Tutorial

  • 1. Socket Programming Jignesh Patel Palanivel Rathinam connecting processes
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12. Programming TCP Client in C #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> void error(char *msg){ perror(msg); exit(0);} int main(int argc, char *argv[]){ int sockfd, portno, n; struct sockaddr_in serv_addr; struct hostent *server; char buffer[256]; if (argc < 3) { fprintf(stderr,&quot;usage %s hostname port&quot;, argv[0]); exit(0); } portno = atoi(argv[2]); sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sockfd < 0) error(&quot;ERROR opening socket&quot;); /* a structure to contain an internet address defined in the include file <netinet/in.h> */ struct sockaddr_in { short sin_family; /* should be AF_INET */ u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; /* not used, must be zero */ }; struct in_addr { unsigned long s_addr; }; Client.c
  • 13. Programming TCP Client in C #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> void error(char *msg){ perror(msg); exit(0);} int main(int argc, char *argv[]){ int sockfd, portno, n; struct sockaddr_in serv_addr; struct hostent *server; char buffer[256]; if (argc < 3) { fprintf(stderr,&quot;usage %s hostname port&quot;, argv[0]); exit(0); } portno = atoi(argv[2]); sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sockfd < 0) error(&quot;ERROR opening socket&quot;); Client.c Socket System Call – create an end point for communication #include <sys/types.h> #include <sys/socket.h> int socket(int domain , int type , int protocol ); Returns a descriptor domain : selects protocol family e.g. PF_IPX, PF_X25, PF_APPLETALK type : specifies communication semantics e.g. SOCK_DGRAM, SOCK_RAW protocol : specifies a particular protocol to be used e.g. IPPROTO_UDP, IPPROTO_ICMP
  • 14. Programming TCP Client in C server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,&quot;ERROR, no such host&quot;); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr , server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) error(&quot;ERROR connecting&quot;); printf(&quot;Please enter the message: &quot;); bzero(buffer,256); fgets(buffer,255,stdin); n = send(sockfd,buffer,strlen(buffer),0); if (n < 0) error(&quot;ERROR writing to socket&quot;); bzero(buffer,256); n = recv(sockfd,buffer,255,0); if (n < 0) error(&quot;ERROR reading from socket&quot;); printf(&quot;%s&quot;,buffer); close(sockfd); return 0; } Client.c Connect System Call – initiates a connection on a socket #include <sys/types.h> #include <sys/socket.h> int connect( int sockfd , const struct sockaddr * serv_addr , socklen_t addrlen ); Returns 0 on success sockfd : descriptor that must refer to a socket serv_addr : address to which we want to connect addrlen : length of serv_addr
  • 15. Programming TCP Client in C server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,&quot;ERROR, no such host&quot;); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr , server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) error(&quot;ERROR connecting&quot;); printf(&quot;Please enter the message: &quot;); bzero(buffer,256); fgets(buffer,255,stdin); n = send(sockfd,buffer,strlen(buffer),0); if (n < 0) error(&quot;ERROR writing to socket&quot;); bzero(buffer,256); n = recv(sockfd,buffer,255,0); if (n < 0) error(&quot;ERROR reading from socket&quot;); printf(&quot;%s&quot;,buffer); close(sockfd); return 0; } Client.c Send System Call – send a message to a socket #include <sys/types.h> #include <sys/socket.h> int send( int s , const void * msg , size_t len , int flags ); Returns number of characters sent on success s : descriptor that must refer to a socket in connected state msg : data that we want to send len : length of data flags : use default 0. MSG_OOB, MSG_DONTWAIT
  • 16. Programming TCP Client in C server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,&quot;ERROR, no such host&quot;); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr , server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) error(&quot;ERROR connecting&quot;); printf(&quot;Please enter the message: &quot;); bzero(buffer,256); fgets(buffer,255,stdin); n = send(sockfd,buffer,strlen(buffer),0); if (n < 0) error(&quot;ERROR writing to socket&quot;); bzero(buffer,256); n = recv(sockfd,buffer,255,0); if (n < 0) error(&quot;ERROR reading from socket&quot;); printf(&quot;%s&quot;,buffer); close(sockfd); return 0; } Client.c Recv System Call – receive a message from a socket #include <sys/types.h> #include <sys/socket.h> int recv( int s , const void * buff , size_t len , int flags ); Returns number of bytes received on success s : descriptor that must refer to a socket in connected state buff : data that we want to receive len : length of data flags : use default 0. MSG_OOB, MSG_DONTWAIT
  • 17. Programming TCP Client in C server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,&quot;ERROR, no such host&quot;); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr , server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) error(&quot;ERROR connecting&quot;); printf(&quot;Please enter the message: &quot;); bzero(buffer,256); fgets(buffer,255,stdin); n = send(sockfd,buffer,strlen(buffer),0); if (n < 0) error(&quot;ERROR writing to socket&quot;); bzero(buffer,256); n = recv(sockfd,buffer,255,0); if (n < 0) error(&quot;ERROR reading from socket&quot;); printf(&quot;%s&quot;,buffer); close(sockfd); return 0; } Client.c Close System Call – close a socket descriptor #include <unistd.h> int close( int s ); Returns 0 on success s : descriptor to be closed
  • 18. Programming TCP Server in C #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> void error(char *msg){ perror(msg); exit(0);} int main(int argc, char *argv[]){ int sockfd, newsockfd, portno, clilen; char buffer[256]; struct sockaddr_in serv_addr, cli_addr; int n; if (argc < 2) { fprintf(stderr,&quot;ERROR, no port provided&quot;); exit(1); } sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error(&quot;ERROR opening socket&quot;); bzero((char *) &serv_addr, sizeof(serv_addr)); portno = atoi(argv[1]); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); Server.c
  • 19. Programming TCP Server in C if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) error(&quot;ERROR on binding&quot;); listen(sockfd,5); clilen = sizeof(cli_addr); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); if (newsockfd < 0) error(&quot;ERROR on accept&quot;); bzero(buffer,256); n = recv(newsockfd,buffer,255,0); if (n < 0) error(&quot;ERROR reading from socket&quot;); printf(&quot;Here is the message: %s&quot;,buffer); n = send(newsockfd,&quot;I got your message&quot;,18,0); if (n < 0) error(&quot;ERROR writing to socket&quot;); close(newsockfd); close(sockfd); return 0; } Server.c Bind System Call – bind a name to a socket #include <sys/types.h> #include <sys/socket.h> int bind( int sockfd , const struct sockaddr * serv_addr , socklen_t addrlen ); Returns 0 on success sockfd : descriptor that must refer to a socket serv_addr : address to which we want to connect addrlen : length of serv_addr
  • 20. Programming TCP Server in C if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) error(&quot;ERROR on binding&quot;); listen(sockfd,5); clilen = sizeof(cli_addr); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); if (newsockfd < 0) error(&quot;ERROR on accept&quot;); bzero(buffer,256); n = recv(newsockfd,buffer,255,0); if (n < 0) error(&quot;ERROR reading from socket&quot;); printf(&quot;Here is the message: %s&quot;,buffer); n = send(newsockfd,&quot;I got your message&quot;,18,0); if (n < 0) error(&quot;ERROR writing to socket&quot;); close(newsockfd); close(sockfd); return 0; } Server.c Listen System Call – listen for connections on a socket #include <sys/types.h> #include <sys/socket.h> int listen( int s , int backlog ); Returns 0 on success s : descriptor that must refer to a socket backlog : maximum length the queue for completely established sockets waiting to be accepted addrlen : length of serv_addr
  • 21. Programming TCP Server in C if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) error(&quot;ERROR on binding&quot;); listen(sockfd,5); clilen = sizeof(cli_addr); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); if (newsockfd < 0) error(&quot;ERROR on accept&quot;); bzero(buffer,256); n = recv(newsockfd,buffer,255,0); if (n < 0) error(&quot;ERROR reading from socket&quot;); printf(&quot;Here is the message: %s&quot;,buffer); n = send(newsockfd,&quot;I got your message&quot;,18,0); if (n < 0) error(&quot;ERROR writing to socket&quot;); close(newsockfd); close(sockfd); return 0; } Server.c Accept System Call – accepts a connection on a socket #include <sys/types.h> #include <sys/socket.h> int accept( int sockfd , const struct sockaddr * addr , socklen_t addrlen ); Returns a non-negative descriptor on success sockfd : descriptor that must refer to a socket addr : filled with address of connecting entity addrlen : length of addr
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.